package com.dkm.service;

import java.util.List;
import java.util.Map;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import com.dkm.entity.Department;
import com.dkm.entity.Role;
import com.dkm.entity.Users;
import com.dkm.util.ResultUtil;


public interface UsersService {

	/**
	 * 根据用户名获取用户信息
	 * @param login_name
	 * @return
	 */
	Users findByLogin_name(String login_name);
	/**
	 * 根据用户id获取用户信息
	 * @param user_id
	 * @return
	 */
	Users findUsersById(String user_id);
	/**
	 * 根据用户id修改密码
	 * @param user_id
	 * @return
	 */
	ResultUtil updatePwd(String user_id,String oldPwd,String newPwd);
	/**
	 * 多条件分页查询用户
	 * @param user
	 * @param pageable
	 * @return
	 */
	Page<Users> findAllUSers(Map<String, Object> map,Pageable pageable);
	/**
	 * 新增和修改用户
	 * @param user
	 * @return
	 */
	ResultUtil saveAndFlushUser(Users user);
	/**
	 * 删除用户
	 * @param user
	 * @return
	 */
	ResultUtil deleteUser(String user_id);
	/**
	 * 根据用户id重置用户密码
	 * @param user_id
	 * @return
	 */
	ResultUtil resetPwd(String user_id);
	
	/**
	 * 根据用户id获取用户的角色信息
	 * @param user_id
	 * @return
	 */
	List<Role> getRolesByUser_id(String user_id);
	/**
	 * 给用户设置角色
	 * @param user_id
	 * @param rolesIds
	 * @return
	 */
	ResultUtil setRoles(String user_id,String[] roleIds);
	/**
	 * 锁定/解锁用户
	 * @param user_id
	 * @param is_lockout
	 * @return
	 */
	ResultUtil locktopic(String user_id,String is_lockout);
	
	/**
	 * 根据用户id获取部门信息
	 * @param current_user_id
	 * @return
	 */
	ResultUtil getDepartmentByUser_id(String current_user_id);
	
	/**
	 * 用户签到
	 * @param current_user_id
	 * @return
	 */
	ResultUtil signIn(String current_user_id);
	
	/**
	 * 用户签退
	 * @param current_user_id
	 * @return
	 */
	ResultUtil signOut(String current_user_id);
	/**
	 * 获取全部用户
	 * @return
	 */
	List<Users> getAllUsers();
	
	/**
	 * 修改用户头像信息
	 * @param user_id 用户编号
	 * @param head_portrait 头像路径
	 * @return
	 */
	ResultUtil updateUserHead_portrait(String user_id,String head_portrait);
	/**
	 * 根据用户id获取用户
	 * @param user_id
	 * @return
	 */
	Users getUserById(String user_id);
}
